import { NextResponse } from 'next/server';
import axios from 'axios';
import crypto from 'crypto';

// 这个函数处理照片修复请求，使用阿里云图像增强服务
export async function POST(request: Request) {
  try {
    const { imageUrl } = await request.json();
    
    if (!imageUrl) {
      return NextResponse.json(
        { error: '没有提供图片URL' },
        { status: 400 }
      );
    }
    
    // 阿里云图像增强API调用
    // 参考文档: https://help.aliyun.com/document_detail/155464.html
    
    const accessKeyId = process.env.ALIYUN_ACCESS_KEY_ID;
    const accessKeySecret = process.env.ALIYUN_ACCESS_KEY_SECRET;
    const endpoint = 'imageenhan.cn-shanghai.aliyuncs.com'; // 阿里云图像增强服务端点
    
    if (!accessKeyId || !accessKeySecret) {
      console.error('缺少阿里云API凭证');
      return NextResponse.json(
        { error: '服务配置错误' },
        { status: 500 }
      );
    }
    
    // 从Base64数据中提取图像数据（如果是Base64格式）
    let imageData = imageUrl;
    if (imageUrl.startsWith('data:image')) {
      imageData = imageUrl.split(',')[1];
    }
    
    // 构建API请求
    const date = new Date().toUTCString();
    const nonce = Math.random().toString(36).substring(2, 15);
    
    // 构建请求参数
    const requestBody = JSON.stringify({
      image: imageData,
      // 可以根据需要添加其他参数，如修复类型等
      // 对于老照片修复，可以使用阿里云的图像修复或图像增强服务
      mode: 'photo_repair' // 假设这是阿里云API的参数，实际使用时需查阅文档
    });
    
    // 计算签名
    const contentMd5 = crypto
      .createHash('md5')
      .update(requestBody)
      .digest('base64');
    
    const stringToSign = `POST\n${contentMd5}\napplication/json\n${date}\n/v2/image/enhance`;
    
    const signature = crypto
      .createHmac('sha1', accessKeySecret)
      .update(stringToSign)
      .digest('base64');
    
    const authorization = `acs ${accessKeyId}:${signature}`;
    
    // 发送请求到阿里云
    try {
      const response = await axios({
        method: 'post',
        url: `https://${endpoint}/v2/image/enhance`,
        headers: {
          'Content-Type': 'application/json',
          'Content-MD5': contentMd5,
          'Date': date,
          'Authorization': authorization,
          'x-acs-signature-nonce': nonce
        },
        data: requestBody
      });
      
      // 处理阿里云响应
      if (response.data && response.data.Data && response.data.Data.ImageUrl) {
        return NextResponse.json({ 
          restoredImageUrl: response.data.Data.ImageUrl 
        });
      } else {
        throw new Error('阿里云返回的数据格式不正确');
      }
    } catch (apiError: any) {
      console.error('阿里云API调用失败:', apiError.response?.data || apiError.message);
      return NextResponse.json(
        { error: '图像处理服务暂时不可用' },
        { status: 502 }
      );
    }
    
    // 模拟API响应 (仅用于开发测试)
    // 在实际应用中，这应该是阿里云处理后的图片URL
    // return NextResponse.json({ restoredImageUrl: imageUrl });
    
  } catch (error) {
    console.error('处理照片时出错:', error);
    return NextResponse.json(
      { error: '处理照片时发生错误' },
      { status: 500 }
    );
  }
} 